package com.jctrip.hotel.source.model.rezen.resp;

import java.io.Serializable;
import java.util.List;

import lombok.Data;

/**
 * @Author henry
 * @Date 2023/8/11 10:57
 * @Description
 */
@Data
public class ProductListDTO implements Serializable {
    private List<CancelRuleList> cancelRuleList;
    private List<GiftList> giftList;
    private List<RestrictList> restrictList;
    private List<RoomTypeList> roomTypeList;

    @Data
    public static class CancelRuleItemList {
        private Integer dayValue;
        private Integer percentValue;
        private String timeValue;
        private String type;
    }

    @Data
    public static class CancelRuleList {
        private Long cancelRuleId;
        private List<CancelRuleItemList> cancelRuleItemList;
        private Integer cancelType;
    }

    @Data
    public static class BookingPhones {
        private String description;
        private String phoneNumber;
    }

    @Data
    public static class ReceptionTimes {
        private String endHour;
        private String startHour;
    }

    @Data
    public static class GiftList {

        private Integer appointType;
        private Integer appointValue;
        private List<BookingPhones> bookingPhones;
        private String freeStyleDesc;
        private String giftId;
        private String giftName;
        private Integer maxAdultNumber;
        private Integer maxChildNumber;
        private String num;
        private List<ReceptionTimes> receptionTimes;
        // 单位分
        private Integer salePrice;
        private String ticketAccessDesc;
        private Integer ticketAccessType;
        private Integer ticketUseSite;
        private String ticketUseSiteDesc;
        private Integer ticketValid;
        private String unableUseIndex;
        private String unableUseOtherDesc;
        private String unit;
    }

    @Data
    public static class RestrictList {

        private String bookBeginTime;
        private String bookEndTime;
        private Integer maxAdvanceBookDays;
        private Integer maxBookingRooms;
        private Integer maxStayDays;
        private Integer minAdvanceBookDays;
        private Integer minBookingRooms;
        private Integer minStayDays;
        private Long restrictRuleId;
    }

    @Data
    public static class BedTypeList {

        private String bedtypCode;
        private Long bedtypId;
        private String entityNm;
        private Integer entityNums;
        private String entitySize;
    }

    @Data
    public static class ImageList {

        private Integer firstFlg;
        private Long imageId;
        private String imageUrl;
    }

    @Data
    public static class BreakfastList {

        private Integer breakfastCnt;
        private String day;
    }

    @Data
    public static class RoomGiftList {

        private String day;
        private List<String> giftIdList;
    }

    @Data
    public static class HourlyRoomInfo {

        private String endTime;
        private String startTime;
        private Integer stayHour;
    }

    @Data
    public static class Rate {

        private String hotelCode;
        private Integer paymentType;
    }

    @Data
    public static class RoomCancelRuleList {

        private Long cancelRuleId;
        private String day;
    }

    @Data
    public static class RoomInventoryList {

        private Integer avaRoomCnt;
        private Integer closeFlg;
        private String day;
    }

    @Data
    public static class PromotionList {

        private Integer promotionType;
    }

    @Data
    public static class RoomPriceList {

        private String day;
        // 单位分
        private Integer price;
        private List<PromotionList> promotionList;
    }

    @Data
    public static class RoomRestrictList {

        private String day;
        private Long restrictRuleId;
    }

    @Data
    public static class ProductList {

        private List<BreakfastList> breakfastList;
        private String customFlag;
        private List<RoomGiftList> giftList;
        private HourlyRoomInfo hourlyRoomInfo;
        private Integer isHourlyRoom;
        private String memberRankCode;
        private Long productId;
        private Rate rate;
        private Long rateId;
        private String reservationNotice;
        private List<RoomCancelRuleList> roomCancelRuleList;
        private List<RoomInventoryList> roomInventoryList;
        private List<RoomPriceList> roomPriceList;
        private List<RoomRestrictList> roomRestrictList;
        private Long roomtypId;
        private Integer statusFlg;
    }

    @Data
    public static class RoomTypeList {

        private List<BedTypeList> bedTypeList;
        private Long groupId;
        private String hotelCode;
        private Long hotelId;
        private List<ImageList> imageList;
        private Integer occupancyMax;
        private List<ProductList> productList;
        private String roomArea;
        private String roomFloors;
        private String roomtypCd;
        private Long roomtypId;
        private String roomtypNm;
        private Integer windowType;
    }
}
